package com.platform.core.service;


import com.platform.comm.service.CommonBiz;
import com.platform.core.entity.SysUserRole;
import com.platform.dto.RoleQo;

import java.util.List;

/**
 * Description: 用户角色-Service接口
 *
 * @author libin
 * Created on 2019/4/26
 **/
public interface SysUserRoleService extends CommonBiz<SysUserRole, String> {
    /**
     * 新增
     *
     * @param userId   用户ID
     * @param roleCode 角色编码
     */
    void create(String userId, String roleCode);

    /**
     * 分配角色
     * @param userId 用户ID
     * @param roleIds 角色ID
     */
    void create(String userId, List<String> roleIds);

    /**
     * 分配角色
     * @param userId 用户ID
     * @param roleInfos 角色信息
     */
    void createInRoleInfo(String userId, List<RoleQo> roleInfos);

    /**
     * 根据用户Id删除
     * @param userId 用户Id
     */
    void removeByUserId(String userId);

    /**
     * 根据角色Id删除
     * @param roleId 角色Id
     */
    void removeByRoleId(String roleId);

    /**
     * 个根据用户Id查询角色
     * @param userId 用户ID
     * @return 角色列表
     */
    List<RoleQo> findRolesByUserId(String userId);

    /**
     * 查询用户角色
     * @param userId 用户ID
     * @return 角色列表
     */
    List<RoleQo> findRolesByUserIdWithoutParent(String userId);

    /**
     * 根据用户id和角色id唯一查询
     * @param userId 用户id
     * @param roleId 角色id
     * @return RoleQo
     * */
    RoleQo findByUserIdAndRoleId(String userId, String roleId);

    /**
     * 批量插入数据库
     * @param collect 集合
     */
    void batchSave(List<SysUserRole> collect);

    /**
     * 判断当前用户是否能访问下级组织
     * @return 结果
     */
    String checkAccessSubOrg();

    /**
     * 保存用户角色
     * @param sysUserRoles 用户角色集合
     */
    void save(List<SysUserRole> sysUserRoles);

    /**
     * 删除用户角色
     * @param sysUserRoles 删除角色
     */
    void remove(List<SysUserRole> sysUserRoles);
}
